#include "pipelib.h"
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main()
{
    // 创建客户端命名管道
    char client_fifo[256];
    snprintf(client_fifo, sizeof(client_fifo), CLIENT_FIFO, getpid());
    if (mkfifo(client_fifo, 0666) == -1)
    {
        perror("mkfifo");
        return 1;
    }

    // 打开服务器管道（只写）
    int server_fd = open(SERVER_FIFO, O_WRONLY);
    if (server_fd == -1)
    {
        perror("open server_fifo");
        unlink(client_fifo);
        return 1;
    }

    // 发送消息到服务器
    struct message msg = {getpid(), "Hello Server!"};
    if (write(server_fd, &msg, sizeof(msg)) == -1)
    {
        perror("write");
        close(server_fd);
        unlink(client_fifo);
        return 1;
    }
    close(server_fd);

    // 打开客户端管道（只读）并等待响应
    int client_fd = open(client_fifo, O_RDONLY);
    if (client_fd == -1)
    {
        perror("open client_fifo");
        unlink(client_fifo);
        return 1;
    }

    // 读取服务器响应
    if (read(client_fd, &msg, sizeof(msg)) > 0)
    {
        printf("Received: %s\n", msg.data);
    }

    close(client_fd);
    unlink(client_fifo);
    return 0;
}